package com.sihan.framework.etm.mapper.baseData;

import com.framework.mybatis.mapper.BaseMapper;
import com.sihan.framework.etm.dto.baseData.ToolDTO;
import com.sihan.framework.etm.dto.business.DeviceLastWarehouseParamDTO;
import com.sihan.framework.etm.entity.baseData.ToolModel;
import com.sihan.framework.etm.entity.business.ToolWarehouseDetail;
import com.sihan.framework.etm.vo.baseData.ToolVO;
import com.sihan.framework.etm.vo.schema.ToolTypeStatisticsSchema;

import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

@Mapper
public interface ToolMapper extends BaseMapper<ToolModel, String> {

	List<ToolVO> selectPage(@Param("param") ToolDTO tool);
	
	ToolVO findById(@Param("id") String id);

	void deleteDevice(@Param("id") String id);

	String selectNameById(@Param("id") String id);

	List<Map<String, String>> selectAll();
	
	/**
	 * 
	 * @description  查询的库存
	 * @param deviceCode
	 * @return
	 * @auther 韩兵
	 * @Date 2020年7月9日
	 * @return List<ToolWarehouseDetail>
	 */
	List<ToolWarehouseDetail> selectLastWarehouseRecordByDeviceCode(@Param("param") DeviceLastWarehouseParamDTO param);
	
	/**
	 * 
	 * @description 统计出入库类型的数量
	 * @param rfids
	 * @return
	 * @auther 韩兵
	 * @Date 2020年7月21日
	 * @return List<ToolTypeStatisticsSchema>
	 */
	List<ToolTypeStatisticsSchema> listDeviceWarehouseToolTypeStatistics(@Param("rfids") List<String> rfids);
	
	/**
	 * 
	 * @description 类型编号查询类型和图片
	 * @param codes
	 * @return
	 * @auther 韩兵
	 * @Date 2020年8月25日
	 * @return List<ToolTypeStatisticsSchema>
	 */
	List<ToolTypeStatisticsSchema> listDeviceWarehouseToolType(@Param("codes") List<String> codes);
	/**
	 * 
	 * @description  更新工器具状态和使用次数
	 * @param ids
	 * @param status
	 * @param comment 领用次数
	 * @auther 韩兵
	 * @Date 2020年8月11日
	 * @return void
	 */
	void updateToolStatus(@Param("ids")List<String> ids,@Param("status")Integer status,@Param("comment")Integer comment);
	
	/**
	 * 
	 * @description 更新工器具状态和试验日期
	 * @param ids
	 * @param status
	 * @param inspectDate
	 * @auther 韩兵
	 * @Date 2020年9月8日
	 * @return void
	 */
	void updateToolStatusAndInspectDate(@Param("ids")List<String> ids,@Param("status")Integer status);
	
	/**
	 * 
	 * @description 根据编号查询工器具
	 * @param codes
	 * @return
	 * @auther 韩兵
	 * @Date 2020年8月14日
	 * @return List<ToolModel>
	 */
	List<String> listToolsByCodes(@Param("codes") List<String> codes);
	
	/**
	 * 
	 * @description 查询最后一次关门之后的所有工器具
	 * @return
	 * @auther 韩兵
	 * @Date 2020年8月14日
	 * @return List<String>
	 */
	List<String> queryAllCodesForDevice();
	
	
	List<ToolModel> selectToolsByRfIds(@Param("rfIds") List<String> rfIds);
	
	int checkToolNameHasDuplicate(@Param("toolId")String toolId,@Param("typeId")String typeId, @Param("toolName")String toolName);
	
	int updateRfidUnbind(String id);
}